/**
 * 
 */
package br.com.skynix.tcmc.model.financeiro;

import java.math.BigDecimal;
import java.sql.Timestamp;

import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.JoinColumn;
import javax.persistence.ManyToOne;
import javax.persistence.Table;
import javax.validation.constraints.NotNull;
import javax.validation.constraints.Size;

import org.hibernate.annotations.ForeignKey;

import br.com.skynix.tcmc.base.model.EntidadeDominio;
import br.com.skynix.tcmc.model.rh.Empresa;

/**
 * @author davi
 * 
 */
@Entity
@Table(name = "tb_transacao")
public class Transacao extends EntidadeDominio {
	@NotNull
	@ManyToOne
	@JoinColumn(name = "id_empresa_fk", nullable = false,
			referencedColumnName = "id")
	@ForeignKey(name = "FK001_transacao")
	private Empresa empresa;

	@NotNull
	@ManyToOne
	@JoinColumn(name = "id_banco_fk", nullable = false,
			referencedColumnName = "id")
	@ForeignKey(name = "FK002_transacao")
	private Banco banco;

	@Column(nullable = true, precision = 15, scale = 2)
	private BigDecimal valor;

	@Size(max = 50)
	@Column(name = "numero_documento", nullable = true, length = 50)
	private String numeroDocumento;

	@Size(max = 1)
	@Column(name = "flag_tipo", nullable = true, length = 1,
			columnDefinition = "CHAR(1) DEFAULT 'C'")
	private String flagTipo;

	@NotNull
	@Column(name = "data_hora_transacao", nullable = false, updatable = false)
	private Timestamp dataHoraTransacao;

	/**
	 * @return the empresa
	 */
	public Empresa getEmpresa() {
		return empresa;
	}

	/**
	 * @param empresa the empresa to set
	 */
	public void setEmpresa(Empresa empresa) {
		this.empresa = empresa;
	}

	/**
	 * @return the dataHoraTransacao
	 */
	public Timestamp getDataHoraTransacao() {
		return dataHoraTransacao;
	}

	/**
	 * @param dataHoraTransacao the dataHoraTransacao to set
	 */
	public void setDataHoraTransacao(Timestamp dataHoraTransacao) {
		this.dataHoraTransacao = dataHoraTransacao;
	}

	/**
	 * @return the banco
	 */
	public Banco getBanco() {
		return banco;
	}

	/**
	 * @param banco the banco to set
	 */
	public void setBanco(Banco banco) {
		this.banco = banco;
	}

	/**
	 * @return the valor
	 */
	public BigDecimal getValor() {
		return valor;
	}

	/**
	 * @param valor the valor to set
	 */
	public void setValor(BigDecimal valor) {
		this.valor = valor;
	}

	/**
	 * @return the numeroDocumento
	 */
	public String getNumeroDocumento() {
		return numeroDocumento;
	}

	/**
	 * @param numeroDocumento the numeroDocumento to set
	 */
	public void setNumeroDocumento(String numeroDocumento) {
		this.numeroDocumento = numeroDocumento;
	}

	/**
	 * @return the flagTipo
	 */
	public String getFlagTipo() {
		return flagTipo;
	}

	/**
	 * @param flagTipo the flagTipo to set
	 */
	public void setFlagTipo(String flagTipo) {
		this.flagTipo = flagTipo;
	}
}
